home *** CD-ROM | disk | FTP | other *** search
/ Symantec Visual Cafe for Java 2.5 / symantec-visual-cafe-2.5-database-dev-edition.iso / Visual Cafe Pro v1.0 / VISCAFE.BIN / TabPanel.class (.txt) < prev    next >
Encoding:
Java Class File  |  1997-06-19  |  5.3 KB  |  281 lines

  1. package symantec.itools.awt;
  2.  
  3. import java.awt.Component;
  4. import java.awt.Dimension;
  5. import java.awt.Event;
  6. import java.awt.Insets;
  7. import java.util.Vector;
  8. import symantec.beans.Beans;
  9.  
  10. public class TabPanel extends BaseTabbedPanel {
  11.    Vector vPanels;
  12.    String[] labels;
  13.    boolean bOsHack;
  14.  
  15.    public TabPanel() {
  16.       this(0, 0);
  17.    }
  18.  
  19.    public TabPanel(boolean var1) {
  20.       this(var1 ? 0 : 1, var1 ? 0 : 1);
  21.    }
  22.  
  23.    public TabPanel(int var1, int var2) {
  24.       super(var1, var2);
  25.       this.vPanels = new Vector();
  26.       String var3 = System.getProperty("os.name");
  27.       if (var3.equals("Windows 95")) {
  28.          this.bOsHack = true;
  29.       } else {
  30.          this.bOsHack = false;
  31.       }
  32.    }
  33.  
  34.    public int addTabPanel(String var1, boolean var2, Component var3) {
  35.       this.vPanels.addElement(var3);
  36.       return ((BaseTabbedPanel)this).addTab(var1, var2);
  37.    }
  38.  
  39.    public int getCurrentPanelNdx() {
  40.       return super.curIndex;
  41.    }
  42.  
  43.    public void setCurrentPanelNdx(int var1) {
  44.       this.showTabPanel(var1);
  45.       if (!Beans.isDesignTime()) {
  46.          super.curIndex = var1;
  47.       }
  48.  
  49.    }
  50.  
  51.    public Component add(Component var1) {
  52.       return this.add(var1, -1);
  53.    }
  54.  
  55.    private String createDefaultLabel(int var1) {
  56.       String var2 = "tab - ";
  57.       var2 = var2 + String.valueOf(var1);
  58.       return var2;
  59.    }
  60.  
  61.    public synchronized Component add(Component var1, int var2) {
  62.       int var3 = this.addTabPanel(this.createDefaultLabel(this.vPanels.size()), true, var1);
  63.       if (var3 == super.curIndex || Beans.isDesignTime()) {
  64.          this.showTabPanel(var3);
  65.       }
  66.  
  67.       this.updatePanelLabels();
  68.       return var1;
  69.    }
  70.  
  71.    public synchronized Component add(String var1, Component var2) {
  72.       return var2;
  73.    }
  74.  
  75.    public synchronized void remove(Component var1) {
  76.       int var2 = this.getPanelTabIndex(var1);
  77.       if (this.countTabs() == 1) {
  78.          this.removeAllTabPanels();
  79.       } else {
  80.          if (var2 == 0) {
  81.             this.showTabPanel(1);
  82.          } else {
  83.             this.showTabPanel(var2 - 1);
  84.          }
  85.  
  86.          this.removeTabPanel(var2);
  87.       }
  88.    }
  89.  
  90.    public void setPanelLabels(String[] var1) {
  91.       this.labels = var1;
  92.       this.updatePanelLabels();
  93.    }
  94.  
  95.    public String[] getPanelLabels() {
  96.       return this.labels;
  97.    }
  98.  
  99.    public void updatePanelLabels() {
  100.       try {
  101.          for(int var1 = 0; var1 < this.vPanels.size(); ++var1) {
  102.             String var2;
  103.             if (this.labels != null) {
  104.                try {
  105.                   var2 = this.labels[var1];
  106.                } catch (ArrayIndexOutOfBoundsException var3) {
  107.                   var2 = this.createDefaultLabel(var1);
  108.                }
  109.             } else {
  110.                var2 = this.createDefaultLabel(var1);
  111.             }
  112.  
  113.             ((BaseTabbedPanel)this).setLabel(var2, var1);
  114.          }
  115.  
  116.       } catch (Throwable var4) {
  117.       }
  118.    }
  119.  
  120.    public void setTabsOnBottom(boolean var1) {
  121.       ((BaseTabbedPanel)this).setTabsInfo(var1 ? 1 : 0, var1 ? 1 : 0);
  122.       ((BaseTabbedPanel)this).layout();
  123.    }
  124.  
  125.    public boolean getTabsOnBottom() {
  126.       return ((BaseTabbedPanel)this).getTabsPosition() != 0;
  127.    }
  128.  
  129.    public synchronized void setTabPanel(String var1, boolean var2, Component var3, int var4) {
  130.       if (var4 >= 0 && var4 < this.vPanels.size()) {
  131.          if (var4 != ((BaseTabbedPanel)this).currentTabIndex() || var2) {
  132.             try {
  133.                this.vPanels.setElementAt(var3, var4);
  134.                ((BaseTabbedPanel)this).setTab(var1, var2, var4);
  135.             } catch (ArrayIndexOutOfBoundsException var5) {
  136.             }
  137.          }
  138.       }
  139.    }
  140.  
  141.    public synchronized Component getTabPanel(int var1) {
  142.       if (var1 >= 0 && var1 < this.vPanels.size()) {
  143.          Component var2 = null;
  144.  
  145.          try {
  146.             var2 = (Component)this.vPanels.elementAt(var1);
  147.          } catch (ArrayIndexOutOfBoundsException var3) {
  148.          }
  149.  
  150.          return var2;
  151.       } else {
  152.          return null;
  153.       }
  154.    }
  155.  
  156.    public synchronized int getPanelTabIndex(Component var1) {
  157.       return this.vPanels.indexOf(var1);
  158.    }
  159.  
  160.    public synchronized void showTabPanel(int var1) {
  161.       if (((BaseTabbedPanel)this).tabIsEnabled(var1)) {
  162.          try {
  163.             Component var2 = (Component)this.vPanels.elementAt(var1);
  164.             ((BaseTabbedPanel)this).showTab(var1);
  165.             ((BaseTabbedPanel)this).showPanel(var2);
  166.          } catch (ArrayIndexOutOfBoundsException var3) {
  167.          }
  168.       }
  169.    }
  170.  
  171.    public synchronized void enableTabPanel(boolean var1, int var2) {
  172.       if (var2 >= 0 && var2 < this.vPanels.size() && var2 != super.curIndex) {
  173.          ((BaseTabbedPanel)this).enableTab(var1, var2);
  174.       }
  175.    }
  176.  
  177.    public synchronized void removeTabPanel(int var1) {
  178.       if (var1 >= 0 && var1 < this.vPanels.size() && var1 != super.curIndex) {
  179.          try {
  180.             Component var2 = (Component)this.vPanels.elementAt(var1);
  181.             super.remove(var2);
  182.             this.vPanels.removeElementAt(var1);
  183.          } catch (ArrayIndexOutOfBoundsException var3) {
  184.          }
  185.  
  186.          ((BaseTabbedPanel)this).removeTab(var1);
  187.       }
  188.    }
  189.  
  190.    public synchronized void removeAllTabPanels() {
  191.       this.vPanels = new Vector();
  192.       super.curIndex = -1;
  193.       ((BaseTabbedPanel)this).removeAllTabs();
  194.    }
  195.  
  196.    public int countTabs() {
  197.       return this.vPanels.size();
  198.    }
  199.  
  200.    public boolean handleEvent(Event var1) {
  201.       switch (var1.id) {
  202.          case 1001:
  203.             if (var1.target instanceof TabPanel && var1.target == this) {
  204.                this.showTabPanel(((BaseTabbedPanel)this).currentTabIndex());
  205.             }
  206.          default:
  207.             return super.handleEvent(var1);
  208.       }
  209.    }
  210.  
  211.    public Dimension preferredSize() {
  212.       Object var1 = null;
  213.       Object var2 = null;
  214.       Dimension var3 = ((Component)this).size();
  215.       int var4 = this.vPanels.size();
  216.       Insets var5 = ((BaseTabbedPanel)this).insets();
  217.       var3.width -= var5.left + var5.right;
  218.       var3.height -= var5.top + var5.bottom;
  219.       if (var3.width < 0) {
  220.          var3.width = 0;
  221.       }
  222.  
  223.       if (var3.height < 0) {
  224.          var3.height = 0;
  225.       }
  226.  
  227.       for(int var6 = 0; var6 < var4; ++var6) {
  228.          Component var7 = (Component)this.vPanels.elementAt(var6);
  229.          if (var7 != null) {
  230.             Dimension var8 = var7.minimumSize();
  231.             if (var8.width > var3.width) {
  232.                var3.width = var8.width;
  233.             }
  234.  
  235.             if (var8.height > var3.height) {
  236.                var3.height = var8.height;
  237.             }
  238.  
  239.             var8 = var7.preferredSize();
  240.             if (var8.width > var3.width) {
  241.                var3.width = var8.width;
  242.             }
  243.  
  244.             if (var8.height > var3.height) {
  245.                var3.height = var8.height;
  246.             }
  247.          }
  248.       }
  249.  
  250.       var3.width += var5.left + var5.right;
  251.       var3.height += var5.top + var5.bottom;
  252.       return var3;
  253.    }
  254.  
  255.    public Dimension minimumSize() {
  256.       Object var1 = null;
  257.       Object var2 = null;
  258.       Dimension var3 = new Dimension(0, 0);
  259.       int var4 = this.vPanels.size();
  260.  
  261.       for(int var5 = 0; var5 < var4; ++var5) {
  262.          Component var7 = (Component)this.vPanels.elementAt(var5);
  263.          if (var7 != null) {
  264.             Dimension var8 = var7.minimumSize();
  265.             if (var8.width > var3.width) {
  266.                var3.width = var8.width;
  267.             }
  268.  
  269.             if (var8.height > var3.height) {
  270.                var3.height = var8.height;
  271.             }
  272.          }
  273.       }
  274.  
  275.       Insets var6 = ((BaseTabbedPanel)this).insets();
  276.       var3.width += var6.left + var6.right;
  277.       var3.height += var6.top + var6.bottom;
  278.       return var3;
  279.    }
  280. }
  281.